const mysql = require("mysql2");
// 引用配置文件，配置全局环境变量
const config = require("./config");
const { Sequelize, DataTypes, Model, Op } = require("sequelize");

// ORM
const sequelize = new Sequelize(
  config.MYSQL_DATABASE,
  MYSQL_USER,
  MYSQL_PASSWORD,
  {
    host: MYSQL_HOST,
    dialect: "mysql",
    logging: false, // 开启或关闭查询时打印sql语句
    // query: { raw: true }, // 设置为 true，即可返回源数据   !!!这个设置全局之后，多表嵌套会出现问题
    pool: {
      max: 5, // 连接池最大连接数量
      min: 0, // 最小连接数量
      idle: 10000, // 如果一个线程 10秒内么有被使用过的话，就释放
    },
  }
);

sequelize
  .authenticate()
  .then(() => {
    console.log("Sequelize connection successful~");
  })
  .catch((err) => {
    console.log("Sequelize connection failure~", err);
  });

module.exports = sequelize;

// // TODO: mysql连接池;
// const connections = mysql.createPool({
//   host: config.MYSQL_HOST,
//   port: config.MYSQL_PORT,
//   database: config.MYSQL_DATABASE,
//   user: config.MYSQL_USER,
//   password: config.MYSQL_PASSWORD,
// });

// // 测试连接是否成功;
// connections.getConnection((err, conn) => {
//   if (err) {
//     console.log("连接失败：", err);
//   } else {
//     console.log("数据库连接成功~");
//   }
// });

// module.exports = connections.promise();
